package com.fanrenqiji.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.web.multipart.MultipartFile;

/**
 * @author lijian E-mail:ljz0721cx@163.com
 * @version 创建时间：2015年5月11日 上午11:51:21
 * @description
 */
public class CheckUtil {

	/**
	 * 校验字符串是否为有效的日期格式
	 * 
	 * @param strDate
	 * @return
	 */
	public static Boolean checkDate(String strDate) {
		Pattern pattern = Pattern
				.compile(
						"(\\d{1,4}[-|\\/|年|\\.]\\d{1,2}[-|\\/|月|\\.]\\d{1,2}([日|号])?(\\s)*(\\d{1,2}([点|时])?((:)?\\d{1,2}(分)?((:)?\\d{1,2}(秒)?)?)?)?(\\s)*(PM|AM)?)",
						Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
		if (pattern.matcher(strDate).matches()) {
			return true;
		}
		return false;
	}

	/**
	 * 校验手机的有效性
	 * 
	 * @param mobile
	 * @return
	 */
	public static Boolean checkMobile(String mobile) {
		Pattern pattern = Pattern.compile("^1[3|4|5|7|8][0-9]\\d{4,8}$");
		Matcher matcher = pattern.matcher(mobile);
		return matcher.matches();
	}

	/**
	 * 电话号码验证
	 * 
	 * @param str
	 * @return 验证通过返回true
	 */
	public static boolean isPhone(String str) {
		Pattern p1 = null, p2 = null;
		Matcher m = null;
		boolean b = false;
		p1 = Pattern.compile("^[0][1-9]{2,3}-[0-9]{5,10}$"); // 验证带区号的
		p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$"); // 验证没有区号的
		if (str.length() > 9) {
			m = p1.matcher(str);
			b = m.matches();
		} else {
			m = p2.matcher(str);
			b = m.matches();
		}
		return b;
	}

	public static void main(String[] args) {
		System.out.println(checkDate("2015-04-25"));
		System.out.println(checkMobile("13037105095"));
	}

	/**
	 * 校验文件的大小
	 * 
	 * @param imageFile
	 *            文件过大返回true
	 */
	public static Boolean checkFileSize(MultipartFile imageFile) {
		return imageFile.getSize() > 1024 * 1024 * 4;
	}

	/**
	 * 校验多文件的大小 文件有一个过大返回
	 * 
	 * @param imageFile
	 */
	public static Boolean checkFileSize(MultipartFile[] imageFile) {
		Boolean isLarge = false;
		for (MultipartFile multipartFile : imageFile) {
			isLarge = checkFileSize(multipartFile);
			if (isLarge)
				break;
		}
		return isLarge;
	}
}
